#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>

#define PORT 100003		/* Server的端口 */
#define MAXDATASIZE 100	/*一次可以读的最大字节数 */

int main(int argc, char *argv[])
{
	int sockfd, numbytes;
	char buf[MAXDATASIZE];
	struct hostent *he;		/* 主机信息 */
	struct sockaddr_in their_addr; 	/* 对方地址信息 */
	while(1)
	{
		if (argc != 2)
		 {
			fprintf(stderr,"usage: client hostname\n");
			exit(1);
		 }
	if ((he=gethostbyname(argv[1])) == NULL)
	 { 
		/* get the host info */
		herror("gethostbyname");
		exit(1);
	 }

	if ((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1) 
	{
		perror("socket");
		exit(1);
	}

	their_addr.sin_family = AF_INET; 
	their_addr.sin_port = htons(PORT); 		/* short, NBO */
	their_addr.sin_addr = *((struct in_addr *)he->h_addr);
	bzero(&(their_addr.sin_zero), 8); 		/* 其余部分设成0 */

	if (connect(sockfd, (struct sockaddr *)&their_addr, sizeof(struct sockaddr)) == -1) 
	{
		perror("connect");
		exit(1);
	}
	
	while(1)
	{
	
	
	printf("我说:");
	scanf("%s",buf);
	if(send(sockfd,buf,sizeof(buf),0)==-1)perror("send");
	if(strcmp(buf,"goodbye")==0)break;
	if((numbytes=recv(sockfd,buf,MAXDATASIZE,0))==-1)
		{
			perror("recv");
			exit(1);
		
		}
		buf[numbytes]='\0';
		printf("他说:%s\n",buf);
	
	}
	}	
	close(sockfd);
	return 0;
}



